草庐IT

vc x86.mis

全部标签

c++ - x86、C++、gcc 和内存对齐

我有这个简单的C++代码:inttestFunction(int*input,longlength){intsum=0;for(longi=0;i#includeusingnamespacestd;intmain(){union{int*input;char*cinput;};size_tlength=1024;input=newint[length];//cinput++;cout如果我用带有-O3的g++4.9.2编译它,它运行良好。我预计,如果我取消对倒数第二行的注释,它会运行得更慢,但它会因SIGSEGV而彻底崩溃。ProgramreceivedsignalSIGSEGV,Se

c++ - x86-64 程序集 : why offset 25 bytes?

我今天开始学习x86汇编,通过分析与这个c++示例对应的汇编代码(我知道存在类似atoi的东西,但我想使示例保持最小):#includestd::vectorrange(intN){std::vectorv(N);for(unsignedinti=0;i如果使用g++-O0-S-fno-stack-protectorreturn_by_value.cpp进行编译,则会产生以下摘录:..._Z5rangei:.LFB509:.cfi_startproc.cfi_personality0x3,__gxx_personality_v0.cfi_lsda0x3,.LLSDA509pushq%r

CISC&RISC? CPU架构有哪些? x86 & ARM?

编者按:鉴于笔者水平有限,文中难免有不当之处,还请各位读者海涵。是为序我猜,常年混迹CSDN的同学应该不会没听说过CPU吧?但你真的了解CPU吗?那笔者问你CPU有哪些架构呢?如果你对你的答案不是很确定,那刚好,不妨跟随笔者来大致了解一下吧~下面开始正文。CISC/RISC照例,先抛出几个问题,带着问题来阅读本文,效果会更好。目前市面上有哪些CPU厂商呢?他们所采用的CPU架构又是哪些呢?不同的CPU架构下面又有哪些CPU品牌呢?话不多说,让咱们来一一解密。先说说CPU厂商,在PC和服务器领域,Intel和AMD是耳熟能详的,在移动消费领域有基于ARM架构进行设计的TI、ST、NXP等等,它们

c++ - 用于多态调用的 x86-64 汇编器

我有C++代码:intmain(){M*m;O*o=newIO();H*h=newH("A");if(__rdtsc()%5==0){m=newY(o,h);}else{m=newZ(o,h);}m->my_virtual();return1;}虚拟调用由这个asm表示:movrax,qwordptr[x]movrax,qwordptr[rax]movrcx,qwordptr[x]callqwordptr[rax]这比我预期的vtable方法调用多了一行。所有四个ASM行都特定于多态调用吗?上面四行怎么伪读?这是完整的ASM和C++(虚拟调用在最后进行):intmain(){addby

c++ - 使用 > 2GB 内存时,Cygwin g++ x86_64 段错误(核心已转储)

我用C++编写了一个素数筛选程序,它使用~12GB内存来计算低于100,000,000,000(1000亿)的所有素数。该程序在使用VisualStudio2012(在为x64设置的项目中)以及64位Linux上的g++编译时运行良好。但是,当在Windows7HomePremium64位上使用cygwin64中的g++编译时,当尝试使用超过~2GBram(运行筛子>~17,000,000,000)时会发生段错误我相当确定它作为64位进程运行,因为任务管理器中的进程名称旁边没有*32。代码:#include#include#include#includeusingnamespacest

vscode 1.86版本远程ssh不兼容旧服务器问题解决

最近vscode发布了1.86版本,该版本中,更新了对glibc的要求,需要最低2.28版本,导致各种旧版本的linux发行版(比如最常见的centos7和一些老版本的ubuntu包括我使用的Ubuntu18.04)都无法用remote-ssh的先决条件来连接了,会一直控制台报错waitingforserverlog或者远程主机可能不符合glibc和libstdc++VSCode服务器。、这些问题很有可能是因为更新了vscode1.86。根据官方FAQ有两种解决办法:回退版本到1.85.2,同时永久禁用更新,但这样本地开发的时候也不能使用vscode的最新特性了。使用1.85.2的portab

c++ - 使用 AVX2 在程序集 x86_64 中添加两个 vector 加上技术说明

我在这里做错了什么?我得到4个零而不是:2468我也很想修改我的.asm函数,以便运行更长的vector,因为在这里我只是使用了一个带有四个元素的vector,这样我就可以在没有SIMD256位寄存器的循环的情况下对这个vector求和。.cpp#include#includeextern"C"double*addVec(double*C,double*A,double*B,size_t&N);intmain(){size_tN=1(finish-start).count().asm.data;C->RCX;A->RDX;B->r8;N->r9.codeaddVecproc;xorrb

c++ - 在现代 x86_64 CPU 上,AVX/SSE 求幂需要多少个时钟周期?

现代x86_64CPU上的AVX/SSE求幂需要多少个时钟周期?我是关于:pow(x,y)=exp(y*log(x))即exp()和log()AVXx86_64指令都需要特定的已知周期数吗?exp():_mm256_exp_ps()日志():_mm256_log_ps()或者循环数可能会根据指数级而变化,是否有最大循环数可以消耗指数? 最佳答案 x86SIMD指令集(即不是x87),至少到AVX2,不包括SIMDexp、log或powpow(x,0.5)除外,它是平方根。然而,有一些SIMD数学库是根据具有这些函数(以及其他函数)的

c++ - Eclipse C/C++ 错误 1 ​​体系结构 x86_64 的重复符号

我在Eclipse中运行一个简单的程序时遇到了这些错误。-我安装了命令行工具。我真的不知道该怎么做。我一直在使用eclipse进行Java类(class),然后下载了C/C++工作站,尽管有一些问题。任何帮助是极大的赞赏。顺便说一句,我使用的是Mac最新操作系统。 最佳答案 您可能有两个main()。您的src文件夹中有什么?(确保没有任何其他c文件与您的一起编译。 关于c++-EclipseC/C++错误1​​体系结构x86_64的重复符号,我们在StackOverflow上找到一个类

c++ - 编译 Qt 应用程序时出现体系结构 x86_64 错误的重复符号

我正在尝试使用Qtcreator在osx上编译Qt应用程序。应用程序在widows中成功编译。但在mac中,它会给出以下链接器错误。2duplicatesymbolsforarchitecturex86_64linkercommandfailedwithexitcode1(use-vtoseeinvocation)有没有人知道一种方法来检查链接器提示的重复符号是什么?我在我的.pro文件中使用了以下但没有成功。QMAKE_LFLAGS+=-v 最佳答案 通过N1ghtLight发表评论作为答案。Duplicatesymbolsfou